{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "128a9890",
   "metadata": {},
   "source": [
    "1.使用MinMaxScaler函数对数据进行归一化处理，将数据存储为df_norm."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "845e8bd3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>ID</th>\n",
       "      <th>Video traffic</th>\n",
       "      <th>social traffic</th>\n",
       "      <th>Web browsing traffic</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>10942</td>\n",
       "      <td>22</td>\n",
       "      <td>42</td>\n",
       "      <td>1528</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>13382</td>\n",
       "      <td>15</td>\n",
       "      <td>24</td>\n",
       "      <td>1120</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>4192</td>\n",
       "      <td>1</td>\n",
       "      <td>2708</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>10908</td>\n",
       "      <td>4</td>\n",
       "      <td>260</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>14130</td>\n",
       "      <td>35</td>\n",
       "      <td>28</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19995</th>\n",
       "      <td>19995</td>\n",
       "      <td>18102</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19996</th>\n",
       "      <td>19996</td>\n",
       "      <td>18216</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19997</th>\n",
       "      <td>19997</td>\n",
       "      <td>18347</td>\n",
       "      <td>14</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19998</th>\n",
       "      <td>19998</td>\n",
       "      <td>18457</td>\n",
       "      <td>104</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19999</th>\n",
       "      <td>19999</td>\n",
       "      <td>18664</td>\n",
       "      <td>17</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>20000 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       Unnamed: 0     ID  Video traffic  social traffic  Web browsing traffic\n",
       "0               0  10942             22              42                  1528\n",
       "1               1  13382             15              24                  1120\n",
       "2               2   4192              1            2708                     0\n",
       "3               3  10908              4             260                    15\n",
       "4               4  14130             35              28                     0\n",
       "...           ...    ...            ...             ...                   ...\n",
       "19995       19995  18102              6               0                     2\n",
       "19996       19996  18216              1               0                     0\n",
       "19997       19997  18347             14               0                     0\n",
       "19998       19998  18457            104               0                     0\n",
       "19999       19999  18664             17               0                     0\n",
       "\n",
       "[20000 rows x 5 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#导入库\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "#读取数据\n",
    "df = pd.read_csv('./第一套题数据/data/data_cluster.csv',encoding='gbk',header=0)\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "c5ed69a0",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import MinMaxScaler\n",
    "\n",
    "#定义规则\n",
    "model_mm = MinMaxScaler(feature_range=(-1,1))    #feature_range：缩放的范围，可以随便填\n",
    "#将规则应用到数据上\n",
    "df_norm = model_mm.fit_transform(df)\n",
    "#转型    如果题目中有提到将数据df_norm存储为nd.array/array类型，那么就不需要转型了\n",
    "df_norm = pd.DataFrame(data=df_norm,columns=df.columns)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "80cc0a77",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>ID</th>\n",
       "      <th>Video traffic</th>\n",
       "      <th>social traffic</th>\n",
       "      <th>Web browsing traffic</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-1.0000</td>\n",
       "      <td>0.094155</td>\n",
       "      <td>-0.620690</td>\n",
       "      <td>-0.983654</td>\n",
       "      <td>-0.464330</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.9999</td>\n",
       "      <td>0.338167</td>\n",
       "      <td>-0.741379</td>\n",
       "      <td>-0.990660</td>\n",
       "      <td>-0.607362</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-0.9998</td>\n",
       "      <td>-0.580879</td>\n",
       "      <td>-0.982759</td>\n",
       "      <td>0.053902</td>\n",
       "      <td>-1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.9997</td>\n",
       "      <td>0.090755</td>\n",
       "      <td>-0.931034</td>\n",
       "      <td>-0.898813</td>\n",
       "      <td>-0.994741</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.9996</td>\n",
       "      <td>0.412971</td>\n",
       "      <td>-0.396552</td>\n",
       "      <td>-0.989103</td>\n",
       "      <td>-1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19995</th>\n",
       "      <td>0.9996</td>\n",
       "      <td>0.810191</td>\n",
       "      <td>-0.896552</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>-0.999299</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19996</th>\n",
       "      <td>0.9997</td>\n",
       "      <td>0.821591</td>\n",
       "      <td>-0.982759</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>-1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19997</th>\n",
       "      <td>0.9998</td>\n",
       "      <td>0.834692</td>\n",
       "      <td>-0.758621</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>-1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19998</th>\n",
       "      <td>0.9999</td>\n",
       "      <td>0.845692</td>\n",
       "      <td>0.793103</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>-1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19999</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.866393</td>\n",
       "      <td>-0.706897</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>-1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>20000 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       Unnamed: 0        ID  Video traffic  social traffic  \\\n",
       "0         -1.0000  0.094155      -0.620690       -0.983654   \n",
       "1         -0.9999  0.338167      -0.741379       -0.990660   \n",
       "2         -0.9998 -0.580879      -0.982759        0.053902   \n",
       "3         -0.9997  0.090755      -0.931034       -0.898813   \n",
       "4         -0.9996  0.412971      -0.396552       -0.989103   \n",
       "...           ...       ...            ...             ...   \n",
       "19995      0.9996  0.810191      -0.896552       -1.000000   \n",
       "19996      0.9997  0.821591      -0.982759       -1.000000   \n",
       "19997      0.9998  0.834692      -0.758621       -1.000000   \n",
       "19998      0.9999  0.845692       0.793103       -1.000000   \n",
       "19999      1.0000  0.866393      -0.706897       -1.000000   \n",
       "\n",
       "       Web browsing traffic  \n",
       "0                 -0.464330  \n",
       "1                 -0.607362  \n",
       "2                 -1.000000  \n",
       "3                 -0.994741  \n",
       "4                 -1.000000  \n",
       "...                     ...  \n",
       "19995             -0.999299  \n",
       "19996             -1.000000  \n",
       "19997             -1.000000  \n",
       "19998             -1.000000  \n",
       "19999             -1.000000  \n",
       "\n",
       "[20000 rows x 5 columns]"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_norm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "c427c51d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>ID</th>\n",
       "      <th>Video traffic</th>\n",
       "      <th>social traffic</th>\n",
       "      <th>Web browsing traffic</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>2.000000e+04</td>\n",
       "      <td>2.000000e+04</td>\n",
       "      <td>20000.000000</td>\n",
       "      <td>20000.00000</td>\n",
       "      <td>20000.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>-6.821210e-17</td>\n",
       "      <td>-1.136868e-17</td>\n",
       "      <td>-0.747416</td>\n",
       "      <td>-0.98295</td>\n",
       "      <td>-0.981448</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>5.773936e-01</td>\n",
       "      <td>5.773936e-01</td>\n",
       "      <td>0.226957</td>\n",
       "      <td>0.06237</td>\n",
       "      <td>0.077406</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>-1.000000e+00</td>\n",
       "      <td>-1.000000e+00</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>-1.00000</td>\n",
       "      <td>-1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>-5.000000e-01</td>\n",
       "      <td>-5.000000e-01</td>\n",
       "      <td>-0.913793</td>\n",
       "      <td>-1.00000</td>\n",
       "      <td>-1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>-1.110223e-16</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>-0.810345</td>\n",
       "      <td>-1.00000</td>\n",
       "      <td>-1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>5.000000e-01</td>\n",
       "      <td>5.000000e-01</td>\n",
       "      <td>-0.637931</td>\n",
       "      <td>-0.99066</td>\n",
       "      <td>-1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         Unnamed: 0            ID  Video traffic  social traffic  \\\n",
       "count  2.000000e+04  2.000000e+04   20000.000000     20000.00000   \n",
       "mean  -6.821210e-17 -1.136868e-17      -0.747416        -0.98295   \n",
       "std    5.773936e-01  5.773936e-01       0.226957         0.06237   \n",
       "min   -1.000000e+00 -1.000000e+00      -1.000000        -1.00000   \n",
       "25%   -5.000000e-01 -5.000000e-01      -0.913793        -1.00000   \n",
       "50%   -1.110223e-16  0.000000e+00      -0.810345        -1.00000   \n",
       "75%    5.000000e-01  5.000000e-01      -0.637931        -0.99066   \n",
       "max    1.000000e+00  1.000000e+00       1.000000         1.00000   \n",
       "\n",
       "       Web browsing traffic  \n",
       "count          20000.000000  \n",
       "mean              -0.981448  \n",
       "std                0.077406  \n",
       "min               -1.000000  \n",
       "25%               -1.000000  \n",
       "50%               -1.000000  \n",
       "75%               -1.000000  \n",
       "max                1.000000  "
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_norm.describe()    # 观察数据"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2784c304",
   "metadata": {},
   "source": [
    "2.使用SpectralClustering算法选择K值2-12对数据进行聚类分析，使用轮廓系数进行评估，将轮廓系数和K值存储在列表k和silhouette_s中，并绘制折线图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "33657ebf",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, '轮廓系数')"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj0AAAHDCAYAAADP4av1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAABqSklEQVR4nO3deVxU9f7H8dewgzKAiIgrikqa5ppbi0tmZqZ5K9MszWzRvFlmeq/VtczKMss2d1NbLNN2f2YuiVrukpph4gKoKIrKKtsAc35/oJPkhggclvfz8ZjHdc6cc+Yzc+913n7P53y/FsMwDERERETKOSezCxAREREpCQo9IiIiUiEo9IiIiEiFoNAjIiIiFYJCj4iIiFQICj0iIiJSISj0iIiISIWg0CMiIiIVgkKPiIiIVAgKPSLlQHJyMq+++ipvvfUWTz/9NAEBAbRp08bssorcmjVrmDFjBqGhoaxdu/ai+2zcuJHhw4fz6quv0rt3bywWS759P//8c9577z3c3d1Lpuhi1qZNG0aPHm12GSJlgovZBYjItRs2bBhvv/02tWrVAmDMmDH07t27xOuw2+3s2LGD1q1bF8v5u3btSteuXdmyZctFXw8PD+fZZ59l7dq1eHl5AfD666+zY8cOOnfuDMBDDz0EwHvvvVcsNZ5T3N/FOXfeeSfXX399sb6HSHmhkR6RMi41NZWoqChH4AGoU6cOr776aonXsmfPHrZt21bi73vOyJEjGTlypCPwAPznP//h+PHjJV5LSX0XEydOpH///sX+PiLlgUKPSBnn7OzM4cOHycjIyLe9pEd64uPj+c9//lOi73m+ffv2sXXrVnr16pVvu4uLC6+88kqJ1lJS30VGRgYbN24kNja22N9LpDzQ5S2RMs7Ly4suXbrQuXNnPvroI2688UbHa0eOHGHIkCHUqlWLJk2acPLkSdLS0mjcuDFPP/20Y7/c3FwmTJhATk4Ozs7OZGVlMWHCBDw9PR37rF+/nh9++IEGDRrw119/cf/993PLLbcAsGvXLjZt2oTFYuHXX391HPPkk09isVj4/vvvWbNmDR9//DHr1q3j+PHjbNmyhcWLF/PZZ5/Rtm1bMjMzmTx5Mn5+fri5uREdHU2/fv1o1apVgb6HTZs2UbNmTXx9fS947fzPcTkff/wxw4YNIzs7G4Bjx44xevRo3N3dWbBggWO/xYsXc+LECXJycvj66685fvw4Bw8eLNB3cc67777LiRMn8PT05NSpU0yYMAF/f39iY2N57733+OWXX7jpppt44YUXmD59Olu3bqVNmza88cYbAISFhfHXX38xZcoU5s2bl2+kLywsjMcff5wpU6awadMmsrOzOXToEC+++GK+73P58uVs3ryZwMBAIiIiqF27NnPmzGHLli1UrVq1QN+ZSJliiEiZZ7PZjFdffdWoXLmy0bt3byMiIsLxWlhYmFGrVi3jr7/+cmy77777jM8//9zxfPz48cayZcsczz/88ENj+PDhjucHDx40brzxRsNmsxmGYRh//vmnUatWrQvqePnll40ZM2Zcss5bb73VePPNN43vvvvOMAzDmDBhgrFlyxbDMAzjf//7nzF+/HjHvidOnDBuvvnmi55n8ODBRlhYWL5tkyZNMm688cZLvvc/1a1bt0Dbw8LCjMGDBzuex8bGGiNHjnQ8z8nJMXr06HHBeS73XcybN8+YNm2a4/nSpUuNO++884J9hgwZYrz00ktGdna2sXHjRmPixIkXnOti38W57b169TKSkpIMwzCMffv25XuPxMRE49Zbb3U837Vrl9GvXz/jr7/+MnJzcy9at0hZp8tbIuWAq6sr//vf/4iJiaFBgwa0bduWr776yvF6ly5duO666xzPH3zwQT799FMAMjMz+eKLL+jZs6fj9fvvvz/f8ZMmTWLo0KG4uroCEBQUxLBhw666TovFwvHjx7nnnnsAGD9+PG3btgXgX//6F/369XPs6+npeVWXbex2O25ubldd09VKSEjg999/JzMzE8i7vDht2jRyc3MLfI433niDRx991PG8V69erFu3jpSUFMc2i8XC6tWrGTt2LC4uLnTo0IGXXnrpqmp99tln8fHxAaBBgwbs37/f8dr+/fupXr2643mjRo2IiIjguuuuw8lJPw1SPunylkg54u/vzzvvvEPfvn2555576NKlC8AFP2K1atUiJiYGyPvxy8rKYubMmY7XDcOgQ4cO5OTk4OLiwo4dOxg8eLDj9SpVqvDiiy8WqsYBAwZcdHuLFi1Ys2YNn376KVWrViUgIADDMAp8Xh8fH5KTkwtV09Vo1qwZ3bp1o2HDhtx777088cQTNGnSpMDHp6amcuzYsXyXywB69uzJmTNnsFqtjm29evXC29u70LU6Ozs7/myxWByX7QCaN29OYmIiSUlJ+Pr68uuvv3LHHXcU+r1EygKFHpEyLj09ndzc3Hw/jjfffDP3338/GzduvGiPS1ZWlmN/u91O5cqVLxi5GT58uOPPubm5jlGea3WpUYQ5c+awcuVKFi5c6BixuZoG5MaNGxMdHU1ubm6+H3uAP//8k6ZNmxa65n96+eWXefrpp/n444+55557uPvuu3nnnXcKdKzdbge44Pu+2MhZcY64uLm50bx5c+bNm4eXlxeGYfDmm28W2/uJlAYawxQp444ePZpvlOYcZ2fnS44SHDx40HG5KyQkhNjYWLKysvLts3fvXsefGzVqlO/SCEB2djY7duzIt83V1TXf6MyRI0cK/Dlee+013nzzzUJforrppptwdXW9YA6ftLQ0NmzYUODzuLu7O4IJkG90BGDFihXY7XaqVKnCmDFjiIiI4Pfff+ePP/7It9+lvgsfHx+sViuHDx/Ot//533dJOHHiBL/88gs1a9akffv2PPzww0UWbEVKK4UekTIuJCSEDz/8kKioKMe2rKws9u3bx8033wzAli1bHD0o2dnZzJgxg1GjRgFQuXJlBg8ezIcffug4Pj4+Pt8cM8888wwzZszIF4xmzJhBjRo18tVSv359x497QkICW7duLfDnsNvtpKamOp6fuxsqMTGR7du3X/F4d3d3Jk6cyP/+9z9HUMnNzeXtt9++qnlsGjZs6Ahzubm5zJs3L1+/zt69e/n6668dz11dXWnevPkFdztd7rt4/vnnefvttx3P09PTCQsLK3CNRcFqtdKgQQNWr17Ns88+S0hICDfccEOBvmuRskqXt0TKOCcnJ6pWrUqLFi0YMGAAISEhnDp1iunTpzuWWggJCWHy5Ml4eXmxdetWRo4cmW+m4MmTJzN27FgeeughgoODsVqt+ZY26NixI0899RT9+/enXr16uLq60qtXLwIDA/PV0rdvX5YsWcLQoUOpWbMmL7/8MpC3fMSePXvYs2cPM2fOpE2bNtx///34+/s7jl24cCGvvfYarVq1wm63ExwcTNOmTZkwYYKjgXf58uXExMSwadMmcnNz2bt3L927d6d+/foA/Pvf/8bV1ZW+ffsSFBSEq6sro0aNcjTzQt5t6ampqRw/fpyJEycSEBDAI488goeHBwCvvvoqI0aMoGbNmvj5+XH77bczd+5c1qxZQ9euXQkICGDw4MH8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Hn74Ycc+nTp1wmazERUVxXXXXefYnp6ejs1mY9KkSRe8z2233YbNZiM3N5fOnTuTkpLC2rVr2bt3L4888ohjv8TERMaOHcvChQtZu3YtZ86cYffu3bz11lvcfvvtNG/enLvuuov169fTuHFj+vfvz6JFiy54v//85z+sW7eOatWqAbB48WL+97//AbBz504OHjyIk5MThw4d4s4772T8+PHX9D2KSOEp9IhIiejRo8cFIz0Ar7/+Or1792bXrl0cO3aMnj17kp2dzd13301mZqZj/9zcXDZu3MjHH39MSEgIAGvWrAHglltuYeLEiWRlZREYGMgXX3zhOO6ll17ijz/+wMvLi169euWr6dxlqJSUFGbMmMGzzz7Lgw8+iK+vL5AXoJYvX47FYuGmm25i7969AAQGBuLn58eTTz7pWHV+586d2Gw22rZty1133cWcOXPw9vZ2XPK6//77FXhETKbQIyIlYuXKlXTr1s3x3NnZGci7FNWyZUvGjx/Pjz/+CICrqys///yzY9/9+/fzzDPP0KFDB6pXr06DBg0YP36843LTOYZhOEaQznFxcWHp0qUMGTKEU6dOXXSl8uTkZO644w5iYmJYu3Ytvr6+9O3bl+XLl9OyZUvHCM+5/+zQoQN33HEHs2bNAvIutXl4eJCZmUmnTp2YMGECM2bMICYmxvEe2dnZhf3qRKSIKPSISLHKzc1l586dNGzYkPvvv5+kpCQqVarEqlWrmDx5MgcOHKBTp07s37+fhx9+GBcXF2666SYATpw4wdSpU9m/fz9z5sxhzpw5PPTQQxw+fJjevXszYMAAHn744QuCzj8NGTKEatWq8dhjj/Htt986tlssFgAefvhh7rzzTl555RU++ugjIK8PqU+fPqxevZqpU6c6jvH09HT0AcXExPDf//6Xm266ieeff56YmBiSkpKYMmUKv/32G9dddx0pKSnk5uY6Ro9ExDy6e0tEilV8fDzbtm1j3Lhx3H777TRu3JiBAwfy8MMP06pVKzIyMli/fj2VK1fm22+/Zd26dQDMnDmT4cOH06NHD7755htq1qyJi4sLLi4udO3aleXLlwNw++23ExER4Xi/c71D5x7nLqlVqVKFm2++2XHpKzc3Fyen/H8Ffv/999x8880888wzPProo2RnZ+Pj48OLL77I8OHDmTlzZr7G64MHD/Laa6/xyCOPcPLkSTp27Mjzzz/Pvffey/z587nttttYsWIFO3fupGnTpsX5NYtIAWikR0SKVVBQEE8//TQ7d+7kpZde4sYbbyQ1NZW5c+dSq1Yt3n//fapUqUJycjJjx46lQ4cOADz22GMMGzYs37nat2+Pn58fkHcJbOjQoQwZMiRfePln79Arr7zi+PNTTz3FnXfeyYABA8jJycHF5e+/Am02G/369ePdd9/lnnvuITExkVWrVvHzzz+zbt069u7de0E906ZNIyUlhVOnTnHmzBmCg4MBuPXWWxk/fjx33303Tz31FCEhIdx3331F8XWKyDVQ6BGRYjdy5Eg8PDyYOnUqgYGBZGRkULNmTR555BGio6OZN28e27dv58UXX6RZs2acOnWK+++/H8Mw8p0nJiaGwMBAPD09820PCAhgyZIlV6zDw8ODO+64gzVr1tC+fft8oSc1NdXRI1S5cmWqVavGkiVLHJfALubbb79l7969TJw4kc8//xyLxYLNZuPee+8F8kaXatSowaZNm3j99dcL/H2JSPFQ6BGRYvfBBx84/pydnc3EiRMJDg5mxIgRvPDCC9xwww35bgevWrUqYWFh+c5x+vRp7rjjDpo2bcqcOXMuuDRVUM8//zwZGRkXjPT89ddfjrvCLBYLmzZt4tVXXwXg6NGjpKWlOWp8++23ufHGGwF46KGHmD17tiMcTZs2jaFDhzrOm5qaisViITs7G1dX10LVLCJFQz09IlJi/vrrL+677z5uvvlmGjVqhLe3N8uWLaNSpUo8+eSTnDhx4qLHnTx5koceeoh58+Zx11138fDDD190JuZz4eJ8OTk5+UZrXFxc8Pb2Ji4uDqvV6ti+du1a2rZt63jetWtX1q5dy9q1a2nWrBmhoaF8+eWXrF271hF4AL744gt+/PFHHnjgASZNmsSBAwe45557AJg0aRI33ngjI0eOvOicQiJSsjTSIyLFbtu2bXzwwQcEBAQwb948/P39Wbt2LZAXQl555RX27NnDmDFj8PT0ZNy4cQQHB3PixAk+/fRT1q1bx7vvvkvjxo254YYbqFmzJn379mXIkCEMGDDAMerj7u7OX3/9RdeuXR3bjhw5wujRo9m8eTNvvfUWTZs2xdfXlx9++MExApWens6ePXu4/vrrgbzb6M959dVX6dy5M3fddRePPvooCxYsIDAwEMib4PDUqVNUr16dP//8k4MHD3Lq1CkWL15MVFQUhmHwxBNPALB06VLWrFlD165dS+Q7F5ELWYx/XjQXESlin3zyCT179iQgIMCx7eDBgxw7doxbbrkl376nTp3CycmJp556Cn9/f+69996LBoXMzEzmzJnD0qVLCQkJYcaMGVesw263ExUVRUJCAqGhofj4+AAwfvx42rdvz88//0zDhg05ePAgt912G3PmzKFbt26MHDnSUfPTTz/NkCFDuP/++/nss89ITU3l+uuvdyxfAXkjU7/88otjAsZz9a5cuZLevXtf/RcoIkVCoUdEyrzz18UqjNjYWGrVqkV8fDzh4eF07tyZ77//nh49ejjuFjsnJyeHFStWcNddd11r2SJSwhR6REREpEJQI7OIiIhUCAo9IiIiUiEo9IiIiEiFoNAjIiIiFYJCj4iIiFQICj0iIiJSISj0iIiISIXw/w5XtwEk+ce9AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_s = df_norm.sample(2000)  #怕模型跑的太慢，随机采样2000条，考试最好别做采样\n",
    "# 由考生填写\n",
    "from sklearn.cluster import SpectralClustering\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.metrics import silhouette_score   #sklearn.metrics:模型评估都是来自这个库，不管是分类还是聚类问题\n",
    "k, silhouette_s= [],[]\n",
    "for x in range(2,13):\n",
    "    #设置参数建模\n",
    "    model_sc = SpectralClustering(n_clusters=x)\n",
    "    #训练\n",
    "    model_sc.fit(df_s)\n",
    "    #轮廓系数\n",
    "    sc = silhouette_score(df_s,labels=model_sc.labels_)\n",
    "    k.append(x)\n",
    "    silhouette_s.append(sc)\n",
    "plt.rc('font',family='YouYuan')  #防止中文乱码，考试中可以用英文，考试的时候有可能没有导入中文字体，就算用了这个可能也没效果\n",
    "plt.figure()\n",
    "plt.plot(k,silhouette_s)\n",
    "plt.title('SpectralClustering')\n",
    "plt.xlabel('聚类的簇数')\n",
    "plt.ylabel('轮廓系数')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c5affd31",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3710143f",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
